/**
 * 
 */
package br.com.localfloripa.entities;

import java.io.Serializable;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.DiscriminatorValue;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.FetchType;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.OneToMany;

/**
 * @author alan
 * @10/03/2012
 *
 */

@Entity
@DiscriminatorValue(value="A")
public class Automovel extends Anuncio implements Serializable {

	private static final long serialVersionUID = -1020746757699273264L;
	
	
	@Enumerated(EnumType.STRING)
	@Column(name="proprietario",nullable=false)
	private Proprietario proprietario;
	
	@Column(name="ano_fabricacao",nullable=true)
	private Integer anoFabricacao;
	
	@Column(name="ano_modelo",nullable=true)
	private Integer anoModelo;
	
	@Column(name="placa",nullable=true)
	private String placa;
	
	@Column(name="chassi",nullable=true)
	private String chassi;
	
	@Column(name="quilometragem",nullable=true)
	private String quilometragem;
	
	@Enumerated(EnumType.STRING)
	@Column(name="tp_combustivel",nullable=true)
	private TipoCombustivel combustivel;
	
	@Column(name="cor",nullable=true)
	private String cor;
	
	@Column(name="potencia",nullable=true)
	private String potencia;
	
	@OneToMany(fetch=FetchType.LAZY,cascade=CascadeType.ALL,orphanRemoval=true) 
	@JoinTable(name="automovel_opcional",joinColumns={@JoinColumn(name="automovel_id")},inverseJoinColumns={@JoinColumn(name="opcional_id")})
	private List<Opcional> opcionais;

	public Automovel() {
		super();
	}

	public Proprietario getProprietario() {
		return proprietario;
	}

	public void setProprietario(Proprietario proprietario) {
		this.proprietario = proprietario;
	}

	public Integer getAnoFabricacao() {
		return anoFabricacao;
	}

	public void setAnoFabricacao(Integer anoFabricacao) {
		this.anoFabricacao = anoFabricacao;
	}

	public Integer getAnoModelo() {
		return anoModelo;
	}

	public void setAnoModelo(Integer anoModelo) {
		this.anoModelo = anoModelo;
	}

	public String getPlaca() {
		return placa;
	}

	public void setPlaca(String placa) {
		this.placa = placa;
	}

	public String getChassi() {
		return chassi;
	}

	public void setChassi(String chassi) {
		this.chassi = chassi;
	}

	public String getQuilometragem() {
		return quilometragem;
	}

	public void setQuilometragem(String quilometragem) {
		this.quilometragem = quilometragem;
	}

	public TipoCombustivel getCombustivel() {
		return combustivel;
	}

	public void setCombustivel(TipoCombustivel combustivel) {
		this.combustivel = combustivel;
	}

	public String getCor() {
		return cor;
	}

	public void setCor(String cor) {
		this.cor = cor;
	}

	public String getPotencia() {
		return potencia;
	}

	public void setPotencia(String potencia) {
		this.potencia = potencia;
	}

	public List<Opcional> getOpcionais() {
		return opcionais;
	}

	public void setOpcionais(List<Opcional> opcionais) {
		this.opcionais = opcionais;
	}
	
}
